home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume4 / uk-1.4 / part3 < prev    next >
Encoding:
Internet Message Format  |  1986-11-30  |  20.0 KB

  1. From: Jim Crammond <seismo!mcvax!cs.hw.ac.uk!jim>
  2. Subject: Sendmail UK-1.4 part 3 of 5
  3. Newsgroups: mod.sources
  4. Approved: jpn@panda.UUCP
  5.  
  6. Mod.sources:  Volume 4, Issue 58
  7. Submitted by: Jim Crammond <seismo!mcvax!cs.hw.ac.uk!jim>
  8.  
  9.  
  10. #    This is a shell archive.
  11. #    Remove everything above and including the cut line.
  12. #    Then run the rest of the file through sh.
  13. -----cut here-----cut here-----cut here-----cut here-----
  14. #!/bin/sh
  15. # shar:    Shell Archiver
  16. #    Run the following text with /bin/sh to create:
  17. #    chn
  18. # This archive created: Mon Mar 17 16:56:47 1986
  19. echo shar: creating directory chn
  20. mkdir chn
  21. cd chn
  22. echo shar: extracting MAKE '(8731 characters)'
  23. cat << \SHAR_EOF > MAKE
  24. #!/bin/sh
  25. #
  26. #  shell script to generate a sendmail <host>.chn file containing all
  27. #  the routing information for this host from a set of per-mailer channel
  28. #  files containing in this directory.
  29. #
  30.  
  31. if [ $# -le 1 ]
  32. then    echo    usage: make host files...
  33.     exit
  34. fi
  35.  
  36. strip="sed -e /^#/d -e /^\$/d"
  37. host=$1
  38. shift
  39. rm -f $host.chn
  40.  
  41. cp /dev/null chn.classes
  42. cp /dev/null S15
  43. cp /dev/null S16
  44. cp /dev/null S17
  45.  
  46. #
  47. # sort out which files refer to which mailers
  48. #
  49. rm -f $$.local $$.ether $$.luucp $$.csnet $$.janet $$.bitnet $$.uucp $$.top
  50.  
  51. for i in $*
  52. do
  53.     case $i in
  54.     *local.chn)    $strip $i >> $$.local
  55.             ;;
  56.     *ether.chn)    $strip $i >> $$.ether
  57.             ;;
  58.     *luucp.chn)    $strip $i >> $$.luucp
  59.             ;;
  60.     *csnet.chn)    $strip $i >> $$.csnet
  61.             ;;
  62.     *janet.chn)    $strip $i >> $$.janet
  63.             ;;
  64.     *bitnet.chn)    $strip $i >> $$.bitnet
  65.             ;;
  66.     *uucp.chn)    $strip $i >> $$.uucp
  67.             ;;
  68.     *top.chn)    $strip $i >> $$.top
  69.             ;;
  70.     esac
  71. done
  72.  
  73. #
  74. #
  75. #
  76. if [ -f $$.local ]
  77. then
  78.     awk '{ printf "R$+@%s\t\t$@$>15$1@$J\n", $1 }' $$.local > S15
  79. fi
  80.  
  81. #
  82. #  Standard format channel tables
  83. #
  84. for chnf in $$.ether $$.luucp $$.csnet
  85. do
  86.     if [ -f $chnf ]
  87.     then
  88.         awk '
  89. BEGIN    {
  90.     mailer=substr(FILENAME, index(FILENAME,".")+1)
  91.     MINCLSIZE = 3
  92.     if (mailer == "ether")
  93.     {    print "# Ethernet"    >>"S17"
  94.         classes = "KLM"
  95.     }
  96.     else if (mailer == "luucp")
  97.     {    print "# Local UUCP"    >>"S17"
  98.         classes = "NOP"
  99.     }
  100.     else if (mailer == "csnet")
  101.     {    print "# CSNet"        >>"S17"
  102.         classes = "QRS"
  103.     }
  104.     c = 1
  105.     }
  106.  
  107. /^#/    {    break    }
  108.  
  109.     {
  110.     i = index($1, ".")
  111.     subdom = substr($1,1,i-1)
  112.     restdom = substr($1,i+1)
  113.     
  114.     if (subdom == $2)
  115.         direct[restdom] = direct[restdom] " " subdom
  116.     else
  117.         printf "R$+@%s\t\t$@<$1@%s>%s.%s\n", $1, $1, $2, mailer    >>"S17"
  118.     }
  119.  
  120. END    {
  121.     for (i in direct)
  122.     {    n = split(direct[i], sub, " ")
  123.         if (n >= MINCLSIZE && c <= length(classes))
  124.         {    C = substr(classes, c, 1)
  125.             c++
  126.             printf "C%s%s\n", C , direct[i]    >>"chn.classes"
  127.             printf "R$+@$=%s.%s\t\t$@<$1@$2.%s>$2.%s\n",C,i,i,mailer >>"S17"
  128.         }
  129.         else
  130.         {    for (j=1; j<=n; j++)
  131.                 printf "R$+@%s.%s\t\t$@<$1@%s.%s>%s.%s\n", \
  132.                     sub[j], i, sub[j], i, sub[j], mailer    >>"S17"
  133.         }
  134.     }
  135.     print ""    >>"chn.classes"
  136.     print ""    >>"S17"
  137.     }
  138. ' $chnf
  139.  
  140.     fi
  141. done
  142.  
  143. #
  144. #   The Janet channel
  145. #
  146. if [ -f $$.janet ]
  147. then
  148.     awk '
  149. BEGIN    {
  150.     print "# Janet sites"
  151.     print "# convert domain order to NRS style"
  152.     print "R$+@$+            $:$>9$1@$2"
  153.     print ""
  154.     }
  155.  
  156.     {
  157.     if ( $1 == $2 )
  158.     {    if ( $1 ~ /^uk\./ )    # general rule will catch this
  159.             break
  160.         printf "R$+@%s\t\t$@<$1@%s>%s.janet\n", $1, $1, $1
  161.     }
  162.     else                # application relays
  163.     {    jntaddr = "$1%" $1
  164.         for (i=NF; i>2; i--)
  165.             jntaddr = jntaddr "%" $i
  166.         jntaddr = jntaddr "@" $2
  167.  
  168.         if ( $2 ~ /^uk\.ac\./ )    # uk.ac nodes
  169.             printf "R$+@%s\t\t$@<%s>%s.janet\n", $1, jntaddr, substr($2,7)
  170.         else                # all others
  171.             printf "R$+@%s\t\t$@<%s>%s.janet\n", $1, jntaddr, $2
  172.     }
  173.     }
  174.  
  175. END    {
  176.     print ""
  177.     print "# convert domain order back to 822 style"
  178.     print "R$+@$+            $:$>9$1@$2"
  179.     print ""
  180.     }
  181. ' $$.janet >>S17
  182.  
  183. fi
  184.  
  185. #
  186. #  The Bitnet channel
  187. #
  188. if [ -f $$.bitnet ]
  189. then
  190.     awk '
  191. BEGIN    {
  192.     print "# Bitnet sites"
  193.     }
  194.  
  195.     {
  196.     if ($1 == $2 ".bitnet")        # general rule will catch this
  197.         break
  198.  
  199.     printf "R$+@%s\t\t$@<$1>%s.bitnet\n", $1, $2
  200.     }
  201.  
  202. END    {
  203.     print ""
  204.     }
  205. ' $$.bitnet >>S17
  206.  
  207. fi
  208.  
  209. #
  210. #   The UUCP channel
  211. #
  212. if [ -f $$.uucp ]
  213. then
  214.     (sort +1 $$.uucp ; echo 'x.y z!x!%s') |
  215.     awk '
  216. BEGIN    {
  217.     MINCLSIZE = 3
  218.     classes = "UVWXYZ"
  219.     c = 1
  220.     m = 0
  221.     print "# UUCP sites"                        >>"S17"
  222.     print "# convert to uucp addresses and try to find a match"    >>"S17"
  223.     print "R$+@$+            $:$>8$1@$2"            >>"S17"
  224.     print ""                            >>"S17"
  225.     }
  226.  
  227.     {
  228.     i = index($1, ".")
  229.     subdom = substr($1,1,i-1)
  230.     restdom = substr($1,i+1)
  231.     
  232.     p = index($2, subdom)
  233.     ps = subdom "!%s"
  234.  
  235.     if (p == 1 && $2 == ps)
  236.         direct[restdom] = direct[restdom] " " subdom
  237.     else if (p > 1 && substr($2, p-1) == ("!" ps))
  238.     {    path = substr($2, 1, p-1)
  239.         if (path != lastpath || restdom != lastrest)
  240.         {    if (m >= MINCLSIZE && c <= length(classes))
  241.             {    j = index(lastpath, "!")
  242.                 host = substr(lastpath,1,j-1)
  243.                 addr = substr(lastpath,j+1)
  244.  
  245.                 rclass = ""
  246.                 for (j=1; j<=m; j++)
  247.                     rclass = rclass " " sub[j]
  248.  
  249.                 C = substr(classes, c, 1)
  250.                 c++
  251.                 printf "C%s%s\n", C, rclass    >>"chn.classes"
  252.                 printf "R$=%s.%s!$+\t\t$@<%s$1!$2>%s.uucp\n", \
  253.                     C, lastrest, addr, host        >>"S17.2"
  254.             }
  255.             else
  256.             {    for (i=1; i<=m; i++)
  257.                 {    j = index(lastpath, "!")
  258.                     host = substr(lastpath,1,j-1)
  259.                     addr = substr(lastpath,j+1) sub[i]
  260.                     printf "R%s.%s!$+\t\t$@<%s!$1>%s.uucp\n",\
  261.                       sub[i], lastrest, addr, host    >>"S17.2"
  262.                 }
  263.             }
  264.             lastpath = path
  265.             lastrest = restdom
  266.             m = 0
  267.         }
  268.         sub[++m] = subdom
  269.     }
  270.     else
  271.     {    i = index($2, "!")
  272.         host = substr($2,1,i-1)
  273.         addr = substr($2,i+1)
  274.         addr = sprintf(addr,"$1")
  275.         printf "R%s!$+\t\t$@<%s>%s.uucp\n", $1, addr, host    >>"S17.2"
  276.     }
  277.     }
  278.  
  279. END    {
  280.     for (i in direct)
  281.     {    n = split(direct[i],sub," ")
  282.         if (n >= MINCLSIZE && c <= length(classes))
  283.         {    C = substr(classes, c, 1)
  284.             c++
  285.             printf "C%s%s\n", C , direct[i]    >>"chn.classes"
  286.             printf "R$=%s.%s!$+\t\t$@<$2>$1.uucp\n", C, i    >>"S17"
  287.         }
  288.         else
  289.         {    for (j=1; j<=n; j++)
  290.                 printf "R%s.%s!$+\t\t$@<$1>%s.uucp\n", \
  291.                     sub[j], i, sub[j]        >>"S17"
  292.         }
  293.     }
  294.     print ""    >>"chn.classes"
  295.     print ""    >>"S17.2"
  296.     print "# no match in uucp - change back to domain style"    >>"S17.2"
  297.     print "R$+!$+            $:$>7$1!$2"            >>"S17.2"
  298.     print ""    >>"S17.2"
  299.     }
  300. '
  301.     cat S17.2 >> S17
  302.     rm -f S17.2
  303. fi
  304.  
  305. #
  306. #   catch errors
  307. #
  308. cat >>S17 <<'EOF'
  309. # Catch unknown subdomains local domain names
  310. R$+@$J        $@<$1@$J>error
  311. EOF
  312.  
  313. if [ -f $$.local ]
  314. then
  315.     awk '{ printf "R$+@%s\t\t$@<$1@$J>error\n", $1 }' $$.local >> S17
  316. fi
  317.  
  318. #
  319. #  complete ruleset 17
  320. #
  321. cat >>S17 <<'EOF'
  322.  
  323. # no match, return "<address>"
  324. R$+            $@<$1>
  325. EOF
  326.  
  327. #
  328. #   Top Level Domain relaying
  329. #
  330. awk '{ printf "R<$+@%s>\t\t$@$>16$1@%s\n", $1, $2 }' $$.top > S16
  331.  
  332. #
  333. #  The header
  334. #
  335. cat > $host.chn <<EOF
  336. ###############################################################################
  337. ###############################################################################
  338. #####
  339. #####    @(#)$host.chn    UK-1.4 sendmail configuration        12/2/86
  340. #####
  341. #####    The mailer selection and routing
  342. #####
  343. ###############################################################################
  344. ###############################################################################
  345.  
  346. # classes
  347. EOF
  348.  
  349. #
  350. #  the classes
  351. #
  352. while read class group
  353. do
  354.     echo "$group" | fmt | sed "s/^/$class/"
  355. done < chn.classes >> $host.chn
  356.  
  357. #
  358. #  the rules
  359. #
  360. cat - S15 >> $host.chn <<'EOF'
  361.  
  362. ###########################################
  363. #  Ruleset 15  --  local domain handling  #
  364. ###########################################
  365.  
  366. #
  367. #  This rule strips the domain part from local addresses
  368. #  and passes the local part back into ruleset 3
  369. #
  370.  
  371. S15
  372. R$+@$J            $>3$1        strip local domain
  373. EOF
  374.  
  375. cat - S16 >> $host.chn <<'EOF'
  376.  
  377. #############################
  378. #  Ruleset 16  --  routing  #
  379. #############################
  380.  
  381. #
  382. #  This rule trys to find an "<address>host.network" triple for a given
  383. #  domain address.  Given a domain address "u@a.b.c.d", it calls the
  384. #  channel matcher with u@a.b.c.d, and if nothing matched, it calls
  385. #  the channel matcher again, with "u%a.b.c.d@b.c.d" and  "u%a.b.c.d@c.d".
  386. #  If there's still no match, then the top level domain relaying is done
  387. #  e.g. "u%a.b.c.d@d" -> "u%a.b.c.d@x.y.z" and the rule is retried.
  388. #
  389.  
  390. S16
  391. R$+@$+            $:$>17$1@$2        initial routing
  392. R<$+>$+            $@<$1>$2        success, return triple
  393.  
  394. #  initial match failed, retry with successively higher level domains
  395. R<$+@$+>        $:<$1%$2@$2>        u@a.b.c -> u%a.b.c@a.b.c
  396. R<$+@$-.$+>        $>17$1@$3        retry routing
  397. R<$+>$+            $@<$1>$2        success, return triple
  398.  
  399. ifdef(`JANETNAME',`
  400. #  general rule for janet - pass all uk addresses to hhcp
  401. R<$+@uk>        $:$>4$1.janet        restore @ in address
  402. R$+@$+.janet        $:$>9$1@janet.$2    convert to NRS order
  403. R$+@uk.ac.$+.janet    $@<$1@uk.ac.$2>$2.janet    uk.ac nodes
  404. R$+@$+.janet        $@<$1@$2>$2.janet    all others
  405. ')
  406. ifdef(`BITNETNAME',`
  407. #  general rule for bitnet - pass all bitnet addresses to rscs
  408. R<$+@bitnet>        $:$>4$1            restore address
  409. R$+@$+.bitnet        $@<$1>$2.bitnet        returns <user>host.bitnet
  410. #  arpa and uucp relays via Bitnet
  411. R<$+@arpa>        $:$>4$1.arpa        restore address
  412. R$+@$+.arpa        $@<$1@$2>smtpuser@wiscvm.bsmtp
  413. R<$+@uucp>        $:$>4$1.uucp        restore address
  414. R$+@$+.uucp        $@<$1@$2>uucp@psuvax1.bsmtp
  415. ')
  416.  
  417. #
  418. # top level domain - relaying sites
  419. #
  420. # This is a list of default relaying sites for addresses
  421. # that dont match anything in the channel matcher.
  422. #
  423. EOF
  424.  
  425. cat - S17 >> $host.chn <<'EOF'
  426.  
  427. ######################################
  428. #  Ruleset 17  --  channel matching  #
  429. ######################################
  430.  
  431. #
  432. #  This rule takes a full domain address and trys to match it with a
  433. #  domain given on the LHS of a rule.
  434. #  If one matches, the "<address>host.network" triple given on the RHS
  435. #  is returned.  Else  "<address>" is returned.
  436. #
  437.  
  438. S17
  439. EOF
  440.  
  441. rm -f chn.classes S15 S16 S17 $$.*
  442.  
  443. echo $host.chn made
  444. exit
  445. SHAR_EOF
  446. if test 8731 -ne "`wc -c MAKE`"
  447. then
  448. echo shar: error transmitting MAKE '(should have been 8731 characters)'
  449. else
  450. chmod a+x MAKE
  451. fi
  452. echo shar: extracting README '(5870 characters)'
  453. cat << \SHAR_EOF > README
  454. General
  455. -------
  456. Having expanded addresses into fully qualified domain addresses, sendmail
  457. then selects the appropriate mailer and routing. The channel tables
  458. provide the information to associate a domain name with a mailer and
  459. transport address (or route).
  460.  
  461. The channel tables contain rules (1 per line) containing
  462. two strings seperated by white space. In general, the string on the LHS
  463. is a fully qualified domain name and the string on the RHS is the route
  464. or "host to send to", e.g.:
  465.  
  466.     usc.ac.uk        vax6
  467.  
  468. specifies that addresses of the form "user@usc.ac.uk" should
  469. be send to the host "vax1".
  470.  
  471. The actual format of the channel tables depends on the mailer,
  472. (see below) which is determined by the file name containing the rules.
  473.  
  474. For example, any file whose name ends with "janet.chn" is assumed to be
  475. a janet mailer channel table.
  476.  
  477. The minimum information you need to specify depends on what mailers you
  478. have, but is essentially:
  479.     a) the domain name(s) the local host is known by,
  480.     b) the names of directly connected hosts,
  481.     c) the list of top level domain relaying sites (see below).
  482.  
  483. The maximum information you can specify is limited by practical
  484. considerations such as the number of rules sendmail can cope with
  485. before running very slowly.  As a guide, if more than 100 rules are
  486. generated in the sendmail <host>.chn file, you may need to cut down
  487. the number of entries in the channel tables.  Careful use of top level
  488. domain relays will often help (particularly with uucp).
  489.  
  490. For example, for uk sites, if ukc.ac.uk is specified as the uucp relay,
  491. then there is no need to specify any routes for uucp sites which has
  492. "ukc!" in the path. Ukc has an extensive nameserver to do further routing.
  493.  
  494.  
  495. Channel Table Formats
  496. ---------------------
  497. local.chn:
  498.     This contains a list of (fully qualified) domain names which are
  499.     to be treated as local mail.
  500.  
  501. ether.chn, luucp.chn, csnet.chn:
  502.     These have the format described above; a domain name on the LHS
  503.     and a hostname to send/relay to on the RHS.
  504.  
  505. janet.chn:
  506.     The LHS domain name is in big-endian form in this table.
  507.     The RHS contains domain name(s), also big-endian, which specify
  508.     the route to reach the domain on the LHS.  By default, all "uk"
  509.     sites are assumed to be directly connected.  Thus this table need
  510.     only contain  (a) directly connected  non-"uk" sites, and
  511.     (b) application relays. E.g.
  512.  
  513.         cern.cernvm        cern.cernvm
  514.         uk.ac.cam.phx        uk.ac.cam.eng-icf
  515.  
  516.     The RHS may contain more than one domain:
  517.         
  518.         domain1        domainA domainB
  519.  
  520.     will send the mail to domainA, then to domainB and onto domain1.
  521.  
  522.     "uk.ac.<name>" domains on the RHS should have a corresponding
  523.     entry in the x25/directory with the "uk.ac." part stripped; other
  524.     domains on the RHS should have a matching entry in the directory.
  525.  
  526. bitnet.chn:
  527.     This has the same format as the ether, luucp and csnet channel tables.
  528.     In addition, by default, all "<name>.bitnet" domains are routed to
  529.     "<name>" (actual routing is done by RSCS). Further, all arpa addresses
  530.     are sent to usersmtp@wiscvm and uucp addresses to uucp@psuvax1, using
  531.     the bsmtp program.
  532.  
  533. uucp.chn:
  534.     This has a slightly different RHS syntax which the same as that
  535.     produced by pathalias(1), e.g.:
  536.  
  537.         usc.ac.uk        vax2!vax1!%s
  538.  
  539.     where %s is the user part of the address (converted to uucp form).
  540.  
  541. top.chn:
  542.     This has a top level domain name on the LHS and a domain name
  543.     on the RHS, for example.:
  544.  
  545.         uk            ukc.ac.uk
  546.  
  547.     which states that any address in the "uk" domain, which did not
  548.     match a domain name in one of the mailer channel tables, is sent to
  549.     ukc.ac.uk.
  550.  
  551.     When sendmail fails to find a match for a domain, e.g.
  552.     "vax6.cs.hw.ac.uk" in the main channel tables, then it retries
  553.     with successively higher level domains, e.g. "cs.hw.ac.uk",
  554.     "hw.ac.uk" and "ac.uk".  If these fail then the top level domain
  555.     relaying rule is applied and  matching begins again with the RHS
  556.     of the relaying rule.
  557.  
  558.  
  559. Examples
  560. --------
  561. The archive Examples.a contains sample mailer channel files.
  562.  
  563.  
  564. How to compile the channel tables
  565. ---------------------------------
  566. 1. Create a mailer channel file for each mailer you have.
  567.    This is best done by extracting sample channel files from Examples.a
  568.    and editing them to contain the relevent data for this host.
  569.  
  570. 2. Run "MAKE host file1 file2... "
  571.    This generates the sendmail classes and rules for channel selection
  572.    and routing in a file <host>.chn.  e.g.
  573.     MAKE hwcs local.chn luucp.chn ukuucp.chn
  574.  
  575.    This shell script does a lot of work so be prepared to wait!
  576.  
  577.  
  578. Supported Mailers
  579. -----------------
  580. MAKE looks for tables for the following mailers:
  581.  
  582.     local.chn    (local mail)
  583.     ether.chn    (ethernet)
  584.     luucp.chn    (local uucp)
  585.     uucp.chn    (uucp)
  586.     janet.chn    (janet)
  587.     bitnet.chn    (bitnet)
  588.     csnet.chn    (csnet)
  589.     top.chn        (top level relaying)
  590.  
  591. If you have other mailers not listed here, then you will need to add
  592. some code the the MAKE shell script. Good Luck!
  593.  
  594.  
  595. Note
  596. ----
  597. Make sure that the domains on the RHS of the relaying rules in top.chn
  598. eventually match some domain on the LHS of a rule in one of the mailer
  599. channel tables.
  600.  
  601.  
  602. Running Shared Configuration Files
  603. ----------------------------------
  604. Suppose we have ten workstations connected to an ethernet with a
  605. central machine attached that has connections to some external network.
  606. Those ten workstations can share the same configuration file.
  607.  
  608. To do this we need to "generalise" the host dependent parts of the
  609. channel tables so that all the workstations can use the same <host>.chn.
  610.  
  611. The trick is to use "$w" when specifying the host specific names in the
  612. local.chn table (e.g. $w.cs.hw.ac.uk);  and to have, in above example,
  613. all ten workstations in the ether.chn.
  614.  
  615. The two key components to this are that: (a) sendmail will determine
  616. whether a domain is local or not before it attempts to locate the
  617. domain in the other channel tables, and (b) sendmail's "$w" macro expands
  618. to the local hostname at runtime.
  619. SHAR_EOF
  620. if test 5870 -ne "`wc -c README`"
  621. then
  622. echo shar: error transmitting README '(should have been 5870 characters)'
  623. fi
  624. echo shar: extracting Examples.a '(4550 characters)'
  625. cat << \SHAR_EOF > Examples.a
  626. !<arch>
  627. ether.chn       508609177   217   4     100644  168       `
  628. #
  629. # Ethernet channel table
  630. #  The domain name on the LHS is routed to the host on the RHS.
  631. #    
  632. brahma.cs.hw.ac.uk    brahma
  633. oberon.cs.hw.ac.uk    oberon
  634. odin.cs.hw.ac.uk    odin
  635. luucp.chn       508609295   217   4     100644  155       `
  636. #
  637. # Local UUCP channel table
  638. #  The domain name on the LHS is routed to the host on the RHS.
  639. #    
  640. ra.cs.hw.ac.uk        ra
  641. jove.cs.hw.ac.uk    ra
  642. zeus.cs.hw.ac.uk    ra
  643.  
  644. uucp.chn        508610006   217   4     100644  987       `
  645. # UUCP Channel Table
  646. #  The domain name on the LHS is mapped to a path on the RHS.
  647. #  If "%s" is included in the RHS then the user part goes here
  648. #  e.g. jim@hwcs.ac.uk ->  hwcs!%s  -> hwcs!jim
  649.  
  650. #  standard NRS names
  651. aimmi.heriot-watt.ac.uk    aimmi!%s
  652. ee.heriot-watt.ac.uk    hwee!%s
  653. cstvax.edinburgh.ac.uk    cstvax!%s
  654. caad.edinburgh.ac.uk    edcaad!%s
  655. cs.kcl.ac.uk        kcl-cs!%s
  656. spider.co.uk        spider!%s
  657. stl.stc.co.uk        stl!%s
  658. stc.co.uk        stl!stc!%s
  659. dcs.leeds.ac.uk        ulcs!%s
  660. cs.ucl.ac.uk        cstvax!cs.ucl.ac.uk!%s
  661. ukc.ac.uk        cstvax!ukc.ac.uk!%s
  662.  
  663. #  abbreviated NRS names (where different from above)
  664. aimmi.hw.ac.uk        aimmi!%s
  665. ee.hw.ac.uk        hwee!%s
  666. cstvax.ed.ac.uk        cstvax!%s
  667. caad.ed.ac.uk        edcaad!%s
  668.  
  669. #  old uucp names
  670. aimmi.uucp        aimmi!%s
  671. cstvax.uucp        cstvax!%s
  672. edcaad.uucp        edcaad!%s
  673. kcl-cs.uucp        kcl-cs!%s
  674. spider.uucp        spider!%s
  675. stl.uucp        stl!%s
  676. stc.uucp        stl!stc!%s
  677. ulcs.uucp        ulcs!%s
  678. ucl-cs.uucp        cstvax!cs.ucl.ac.uk!%s
  679. ukc.uucp        cstvax!ukc.ac.uk!%s
  680.  
  681. # everything else goes to ukc for further routing
  682.  
  683. janet.chn       511450060   217   4     100644  783       `
  684. #
  685. # Janet channel table
  686. #   The domain name on the LHS is routed to the domain name on the RHS.
  687. #   Note that the domain names on the LHS are in big-endian form.
  688. #   The domains on the RHS correspond to entries in the x25/directory as
  689. #   follows:
  690. #        uk.ac.<name>    ->    <name>
  691. #        uk.<name>    ->    uk.<name>
  692. #
  693. #   Defining the janet mailer automatically includes the default rule
  694. #   that all "uk" sites are directly connected.
  695. #   So, only non-"uk" sites and application relays are required here.
  696. #
  697. cern.cernvm        cern.cernvm
  698. cern.gec-a        cern.gec-a
  699. uk.ac.cam.eng-dsl    uk.ac.cam.cl-jenny
  700. uk.ac.cam.eng-44    uk.ac.cam.cl-jenny  uk.ac.cam.eng-dsl
  701. uk.ac.cam.phx        uk.ac.cam.eng-icf
  702. uk.ac.ncl.kelpie    uk.ac.ncl.cheviot
  703. uk.ac.nott.maths    uk.ac.nott.cs
  704. uk.ac.york.com        uk.ac.york.kl
  705. uk.alvey        uk.ac.rl.gm
  706.  
  707. bitnet.chn      508610388   217   4     100644  400       `
  708. #
  709. # Bitnet channel table
  710. #  Actual routing is done by the bitnet mailer itself.
  711. #  Defining the bitnet mailer automatically includes the following mappings:
  712. #    <any>.bitnet   ->   <any>
  713. #    <any>.arpa     ->   smtpuser@wiscvm   (using bsmtp)
  714. #    <any>.uucp     ->   uucp@psuvax1      (using bsmtp)
  715. #
  716. #  So, only bitnet sites with other domain names should be included here
  717. #  e.g.   ucbjade.cc        ucbjade
  718. #
  719. top.chn         508609427   217   4     100644  469       `
  720. #  Top level domains
  721. #    If an address hasn't matched a domain name in any other table then
  722. #    it should match something here. The RHS is a domain which specifies
  723. #    where the message should be relayed for further routing.
  724. #
  725. uk        cstvax.ed.ac.uk
  726. uucp        ukc.ac.uk
  727. arpa        cs.ucl.ac.uk
  728. com        cs.ucl.ac.uk
  729. edu        cs.ucl.ac.uk
  730. gov        cs.ucl.ac.uk
  731. mil        cs.ucl.ac.uk
  732. org        cs.ucl.ac.uk
  733. oz        ukc.ac.uk
  734. csnet        relay.cs.net
  735. bitnet        wiscvm.wisc.edu
  736. mailnet        multics.mit.edu
  737. dec        decwrl.dec.com
  738.  
  739. local.chn       508609283   217   4     100644  289       `
  740. #
  741. #  The Local channel
  742. #    The domain names listed here are local to this host
  743. #
  744. #    NRS names
  745. cs.hw.ac.uk
  746. cs.heriot-watt.ac.uk
  747. #    UUCP name
  748. hwcs.uucp
  749. #
  750. #  As we are a multihost site, we must include the following host names
  751. #
  752. brahma.cs.hw.ac.uk
  753. brahma.cs.heriot-watt.ac.uk
  754. brahma.hwcs.uucp
  755.  
  756. gen.top.chn     508609252   217   4     100644  381       `
  757. #  Top level domains
  758. #    This table sends uk mail to ukc, and all other top level domains to ucl.
  759. #
  760. #    The name "$=T" can be used to match all top level domains given in the
  761. #    top.dom table.  This can save on the number of rules generated by MAKE
  762. #
  763. #    NOTE: A list of top level domains would need to be explicitly
  764. #          specified in ../dom/top.dom.
  765. #
  766. uk        ukc.ac.uk
  767. $=T        cs.ucl.ac.uk
  768.  
  769. csnet.chn       508609142   217   4     100644  363       `
  770. #
  771. # CSNet PhoneNet channel table
  772. #  The domain name on the LHS is routed to the host on the RHS.
  773. #
  774. #  Since PhoneNet sites all call csnet-relay, you just need to specify
  775. #  the different names of csnet-relay in this table.  All other routing
  776. #  is done in the top.chn table.
  777. #    
  778. csnet-relay.csnet    csnet-relay
  779. csnet-relay.arpa    csnet-relay
  780. relay.cs.net        csnet-relay
  781.  
  782. SHAR_EOF
  783. if test 4550 -ne "`wc -c Examples.a`"
  784. then
  785. echo shar: error transmitting Examples.a '(should have been 4550 characters)'
  786. fi
  787. echo shar: done with directory chn
  788. cd ..
  789. #    End of shell archive
  790. exit 0
  791.  
  792.